import xarray as xr
import numpy as np


#设置numpy打印选项，显示完整数组
np.set_printoptions(threshold=np.inf , linewidth=np.inf)

# 读取NetCDF文件
ds = xr.open_dataset('/mnt/raid1/lijing/WRF_model/WRF-4.3/run/wrfout_d02_2024-05-28_21:00:00' , engine='netcdf4')  # 替换为文件路径
cldfra = ds['CLDFRA']  # 获取云量数据

# 处理数据
# 对于每个垂直层，检查是否有云(CLDFRA > 0)
# 只要层中任意一个网格有云(>0)，整个层标记为1
cloud_mask = (cldfra > 0).any(dim=['south_north', 'west_east'])

# 转换为二维数组
# 创建一个与水平网格相同的二维数组
result = np.zeros((cldfra.sizes['south_north'], cldfra.sizes['west_east']))

# 对于每个垂直层，如果有云，则将该层对应的水平位置赋值为1
for k in range(cldfra.sizes['bottom_top']):
    layer_data = cldfra.isel(bottom_top=k).squeeze()
    if (layer_data > 0).any():
        result +=(layer_data > 0).astype(int)

# 将结果转换为0/1矩阵(只要有云出现的网格就为1)
result = (result > 0).astype(int)
# 输出结果
print("二维云分布矩阵:")
print(result)

